\documentclass[12pt]{ctexart}
\usepackage[utf8]{inputenc}
\usepackage{amssymb}
\usepackage{enumitem}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage[UTF8]{ctex}
\usepackage{amsfonts,amssymb}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{listings}
\usepackage{geometry}
\usepackage{pgfplots}
\usepackage[hidelinks]{hyperref}
\usepackage{setspace}
\usepackage{float}   
\usepackage{url}
\usepackage{xcolor}
\bibliographystyle{plain}
\newfontfamily\courier{Courier New}
\usepackage{tikz}
\usepackage{subcaption}
\setstretch{1.1} 
\geometry{a4paper}
\geometry{top=3.5cm} 
\geometry{bottom=3.5cm}
\geometry{left=3cm}
\geometry{right=3cm}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{
 linewidth=1.1\textwidth,
 basicstyle=\small\ttfamily, % 设置字体族
  backgroundcolor=\color[RGB]{245,245,244},
 breaklines=true, % 自动换行
 keywordstyle=\bfseries\color{NavyBlue}, % 设置关键字为粗体，颜色为 NavyBlue
 morekeywords={}, % 设置更多的关键字，用逗号分隔
 emph={self}, % 指定强调词，如果有多个，用逗号隔开
    emphstyle=\bfseries\color{Rhodamine}, % 强调词样式设置
    commentstyle=\itshape\color{black!50!white}, % 设置注释样式，斜体，浅灰色
    stringstyle=\bfseries\color{PineGreen!90!black}, % 设置字符串样式
    columns=flexible,
     tabsize=4,
      escapeinside={\%*}{*)}, 
    numbers=left, % 显示行号在左边
    numbersep=2.5em, % 设置行号的具体位置
    numberstyle=\tiny, % 缩小行号
    frame=single, % 边框
    framesep=1em, % 设置代码与边框的距离
    extendedchars=false, %解决代码跨页时，章节标题，页眉等汉字不显示的问题  
    xleftmargin=2.5em,xrightmargin=2.5em, aboveskip=1em, %设置边距  
    columns=fullflexible,
    captionpos=b,   
}

\title{数学软件-第二次作业}
\author{张志心\\Mixed Class 3210106357}

\newtheorem{alg}{算法}
% \renewcommand{\proofname}{\indent\bf 证明}
% \newenvironment{sol}{\begin{proof}[\indent\bf 解]}{\end{proof}}

\begin{document}

\maketitle

\CTEXsetup[format={\Large\bfseries}]{section}

\section{流体动力学:求解二维navier - stokes方程}

\subsection{介绍}

\subsection{不可压缩的Navier-Stokes方程}

二维不可压缩流体的流场完全由速度向量 $q=(u(x, y), v(x, y)) \in \mathbb{R}^2$ 
和压力 $p(x, y)\in \mathbb{R}$ 描述。\cite{refbook} 这些函数是以下守恒定律的解（参见，例如，Hirsch, 1988）：

\begin{itemize}
    \item 质量守恒:
        \begin{equation}
            div(q) = 0
        \end{equation}
        或者写成\textit{散度}\footnote{
        我们回顾二维域的微分算子\textit{散度}、\textit{梯度}和\textit{拉普拉斯算子}的定义:
        如果 $v = (v_x, v_y):\mathbb{R}^2 \rightarrow \mathbb{R}^2$
        以及 $\phi:\mathbb{R}^2 \rightarrow \mathbb{R}$ 那么
        \begin{equation*}
            \text{div}(v) = \dfrac{\partial v_x}{\partial x} + \dfrac{\partial v_y}{\partial y}, \mathcal{G}\phi = \bigg(\dfrac{\partial \phi}{\partial x}, \dfrac{\partial \phi}{\partial y}\bigg), \Delta\phi = \text{div}(\mathcal{G}\phi) = \dfrac{\partial^2 \phi}{\partial x^2} + \dfrac{\partial^2 \phi}{\partial y^2},
        \end{equation*}
        并且 $\Delta v = (\Delta v_x, \Delta v_y)$。
        }
        算子的显式形式，
        \begin{equation}
            \dfrac{\partial u}{\partial x} + 
            \dfrac{\partial u}{\partial y} = 0
        \end{equation}
    \item 紧凑形式的动量守恒方程\footnote{
    这里我们用 $\otimes$ 表示张量的积。
    }
    \begin{equation}
        \dfrac{\partial q}{\partial t} + \text{div}(q\otimes q) = -\mathcal{G}p + \dfrac{1}{Re}\Delta q
    \end{equation}
    或者表示成显示形式，
    \begin{equation} \label{equ:1}
        \begin{cases}
            \dfrac{\partial u}{\partial t} + 
            \dfrac{\partial u^2}{\partial x} + 
            \dfrac{\partial uv}{\partial y} = 
            -\dfrac{\partial p}{\partial x} + 
            \dfrac{1}{Re}\bigg(\dfrac{\partial^2 u}{\partial x^2}
            + \dfrac{\partial^2 u}{\partial y^2}\bigg) \\

            \dfrac{\partial v}{\partial t} + 
            \dfrac{\partial uv}{\partial x} + 
            \dfrac{\partial v^2}{\partial y} = 
            -\dfrac{\partial p}{\partial y} + 
            \dfrac{1}{Re}\bigg(\dfrac{\partial^2 v}{\partial x^2}
            + \dfrac{\partial^2 v}{\partial y^2}\bigg)
        \end{cases}
    \end{equation}
\end{itemize}

前面的方程以\textit{无因次}形式写成，使用以下标度变量:

\begin{equation}
    x = \dfrac{x^*}{L}, y = \dfrac{y^*}{L}, 
    u = \dfrac{u^*}{V_0}, v = \dfrac{v^*}{V_0}, 
    t = \dfrac{t^*}{L/V_0}, p = \dfrac{p^*}{\rho_0V_0^2},
\end{equation}
其中上标 (∗) 表示以物理单位测量的变量。常数 $L$、$V_0$ 分别是用于描述模拟流动的参考长度和速度。无量纲数 $Re$ 被称为\textit{雷诺数}，用于量化流动中惯性（或对流）项和粘性（或扩散）\footnote{在第一章中讨论了描述对流和扩散现象的模型标量方程。}项之间的相对重要性：
\begin{equation} \label{equ:2}
    Re = \dfrac{V_0L}{\nu}
\end{equation}
其中 $\nu$ 是液体的粘滞系数。

总结起来，本项目将数值求解的Navier-Stokes偏微分方程系统由 (\ref{equ:1}) 和 (\ref{equ:2}) 定义；初始条件（当 $t = 0$）和边界条件将在下面的章节中进行讨论。

\subsection{数值算法}
\subsection{计算域，交错网格和边界条件}

通过考虑一个$L_x\times L_y$ 的矩形区域（见 图: \ref{fig:1}），并在各处应用周期边界条件，可以大大简化数值求解 Navier-Stokes 方程。速度场 $q(x, y)$ 和压力场 $p(x, y)$ 的周期性在数学上表示为：

\begin{equation}
    q(0, y) = q(L_x, y), ~~p(0, y) = p(L_x, y), ~~~~~\forall y \in [0, L_y],
\end{equation}
\begin{equation}
    q(x, 0) = q(x, L_y), ~~p(x, 0) = p(x, L_y), ~~~~~\forall x \in [0, L_x].
\end{equation}

将在域内进行解算的点按照矩形且均匀的二维网格分布。由于在我们的方法中不是所有变量共享相同的网格，因此我们首先定义一个\textit{主要}网格（见 图: \ref{fig:1}），该网格由沿 $x$ 方向取 $n_x$ 个计算点和沿 $y$ 方向取 $n_y$ 个计算点生成：
\begin{equation}
    x_c(i) = (i - 1)\delta x, ~~\delta x = \dfrac{L_x}{n_x - 1}, ~~~~~i = 1, \ldots, n_x, 
\end{equation}
\begin{equation}
    y_c(j) = (j - 1)\delta y, ~~\delta y = \dfrac{L_y}{n_y - 1}, ~~~~~j = 1, \ldots, n_y.
\end{equation}

\textit{次级}网格由初级网格计算体的中心定义:
\begin{equation}
    x_m(i) = (i - 1/2)\delta x, ~~~i = 1, \ldots, n_{xm},
\end{equation}
\begin{equation}
    y_m(j)=(j-1/2)\delta y, ~~~j = 1, \ldots, n_{ym},
\end{equation}
在此处，我们使用了简写符号 $n_{xm} = n_x - 1$，$n_{ym} = n_y - 1$。在定义为矩形区域 $[x_c(i), x_c(i+1)] \times [y_c(j), y_c(j+1)]$ 的计算单元内，未知变量 $u$、$v$、$p$ 将作为对不同空间位置处解的近似值进行计算：
 \begin{itemize}
    \item $u(i,j)\sim u(x_c(i), y_m(j))$ (计算体左面),
    \item $v(i, j) \sim v(x_m(i), y_c(j))$ (计算体下面),
    \item $p(i, j) \sim p(x_m(i), y_m(j))$ (计算体中心).
 \end{itemize}
这种变量的$错位$排列具有压力和速度之间的强耦合优势。它还有助于（参见本章末尾的参考文献）避免在对齐排列中（其中所有变量都在相同的网格点上计算）遇到的稳定性和收敛性问题。


\begin{figure}
  \centering
  \fbox{
  \begin{subfigure}[b]{0.43\textwidth}
    \centering
    \begin{tikzpicture}[scale=0.8]
        \draw[->] (0,0) -- (6,0) node[below] {$x~~L_x$};
        \draw[->] (0,0) -- (0,6) node[left] {$y~~L_y$};
        \draw[red, line width=2pt] (0,0) rectangle (5,5);
        \draw[<->] (0,2.5) -- (2,2.5) node[midway, above] {periodicity};
        \draw[<->] (4,2.5) -- (6,2.5) node[midway, above] {periodicity};
        \draw[<->] (2.5,0) -- (2.5,2) node[midway, right] {periodicity};
        \draw[<->] (2.5,4.5) -- (2.5,7) node[midway, right] {periodicity};
        \node[left] at (0,3.34) {$       $};
        \node[left] at (0,2.50) {$       $};
        \node[left] at (0,1.67) {$       $};
        \node[below left] at(0, 0) {0};
    \end{tikzpicture}
  \end{subfigure}
  }
  \hfill
  \fbox{
  \begin{subfigure}[b]{0.45\textwidth}
    \centering
    \begin{tikzpicture}[scale=0.7]
        \draw[->] (0,0) -- (6,0) node[below] {$x~~L_x$};
        \draw[->] (0,0) -- (0,6) node[left] {$y~~L_y$};
        \draw[cyan, line width=2pt] (0,0) rectangle (5,5);
        \draw[dashed, line width=1pt] (2.5,0) -- (2.5,5);
        \draw[dashed, line width=1pt] (0,2.5) -- (5,2.5);
        \draw[cyan, line width=2pt] (0,1.67) -- (5,1.67);
        \draw[cyan, line width=2pt] (0,3.34) -- (5,3.34);
        \draw[cyan, line width=2pt] (3.34,0) -- (3.34,5);
        \draw[cyan, line width=2pt] (1.67,0) -- (1.67,5);
        \fill (2.5,2.5) circle (2pt);
        \node[below right] at (2.5,2.5) {p(i,j)};
        \fill (2.5,1.67) circle (2pt);
        \node[below right] at (2.5,1.67) {v(i,j)};
        \fill (1.67,2.5) circle (2pt);
        \node[below left] at (1.67,2.5) {$u(i,j)$};
        \node[below, rotate=90] at (1.47,-0.7) {$x_c(i)$};
        \node[below, rotate=90] at (2.30,-0.7) {$x_m(i)$};
        \node[below, rotate=90] at (3.14,-1) {$x_c(i+1)$};
        \node[left] at (0,3.34) {$y_c(j+1)$};
        \node[left] at (0,2.50) {$y_m(j)$};
        \node[left] at (0,1.67) {$y_c(j+1)$};
        \node[below left] at(0, 0) {0};
    \end{tikzpicture}
  \end{subfigure}
  }
  \caption{计算域，交错网格和边界条件}
  \label{fig:1}
\end{figure}

\bibliography{references.bib}

\end{document}